home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Technotools
/
Technotools (Chestnut CD-ROM)(1993).ISO
/
database
/
jbcalc10
/
jbkey.prg
< prev
next >
Wrap
Text File
|
1988-01-16
|
10KB
|
234 lines
********************************************************************************
* JBKEY.PRG
* Author : John A. Bristor
* Program Purpose : Wait for Keystroke and Take appropriate Action
********************************************************************************
STORE " " TO JBEXIT,JBFLAG
STORE SPACE(1) TO JBSYMBOL
STORE 999 TO JBT,JBL
STORE " DEC " TO JBTYPE
DO WHILE JBEXIT <> "X"
SET COLOR TO W*/N
@ JABTOP+1,JABLEFT+25 SAY "F1"
SET COLOR TO N/W
@ JABTOP+2,JABLEFT+12 SAY JBTYPE
SET COLOR TO W/N
IF JBANGLE = "DEG"
@ JABTOP+1,JABLEFT+2 SAY "DEG"
SET COLOR TO N/W
@ JABTOP+1,JABLEFT+5 SAY "/Rad"
SET COLOR TO W/N
ELSE
SET COLOR TO N/W
@ JABTOP+1,JABLEFT+2 SAY "Deg/"
SET COLOR TO W/N
@ JABTOP+1,JABLEFT+6 SAY "RAD"
ENDIF
IF JBMEM1 <> " "
SET COLOR TO N/W
@ JABTOP+3,JABLEFT+3 SAY "M"
SET COLOR TO W/N
ELSE
@ JABTOP+3,JABLEFT+3 SAY " "
ENDIF
INKEY(0) && WAIT FOR KEYSTROKE
SET COLOR TO W/N
@ JABTOP+3,JABLEFT+2 SAY " "
IF JBFLAGGER = .F.
@ JABTOP+3,JABLEFT+27 SAY JBOPER
ELSE
STORE .F. TO JBFLAGGER
ENDIF
IF JBOPER$'='
@ JABTOP+3,JABLEFT+5 SAY SPACE(20-LEN(JBCURR))+JBCURR+" "
ENDIF
DO CASE
CASE LASTKEY() = 37
DO JBDOIT WITH JBSYMBOL,JBT,JBL,10,13,"%"
CASE LASTKEY() = 77 .OR. LASTKEY() = 109
DO JBREDO WITH JBSYMBOL,JBT,JBL
@ JABTOP+13,JABLEFT+13 SAY "M"
STORE JBCURR TO JBMEM1
STORE "M" TO JBSYMBOL
STORE 13 TO JBT
STORE 13 TO JBL
STORE .T. TO JBFLAGGER
CASE LASTKEY() = 82 .OR. LASTKEY() = 114
DO JBREDO WITH JBSYMBOL,JBT,JBL
@ JABTOP+16,JABLEFT+13 SAY "R"
STORE JBMEM1 TO JBCURR
@ JABTOP+3,JABLEFT+5 SAY SPACE(20-LEN(JBCURR))+JBCURR+" "
STORE "R" TO JBSYMBOL
STORE 16 TO JBT
STORE 13 TO JBL
STORE .T. TO JBFLAGGER
CASE LASTKEY() = 42
DO JBDOIT WITH JBSYMBOL,JBT,JBL,10,25,"*"
CASE LASTKEY() = 43
DO JBDOIT WITH JBSYMBOL,JBT,JBL,16,25,"+"
CASE LASTKEY() = 45
DO JBDOIT WITH JBSYMBOL,JBT,JBL,13,25,"-"
CASE LASTKEY() = 46
IF AT('.',JBCURR) = 0
DO JBDOIT WITH JBSYMBOL,JBT,JBL,16,19,"."
ELSE
IF JBOPER = " "
DO JBDOIT WITH JBSYMBOL,JBT,JBL,16,19,"."
ENDIF
STORE .T. TO JBFLAGGER
ENDIF
CASE LASTKEY() = 47
DO JBDOIT WITH JBSYMBOL,JBT,JBL,07,25,"/"
CASE LASTKEY() = 94
DO JBDOIT WITH JBSYMBOL,JBT,JBL,07,25,"^"
CASE LASTKEY() = 48
DO JBDOIT WITH JBSYMBOL,JBT,JBL,16,16,"0"
CASE LASTKEY() = 49
DO JBDOIT WITH JBSYMBOL,JBT,JBL,13,16,"1"
CASE LASTKEY() = 50
DO JBDOIT WITH JBSYMBOL,JBT,JBL,13,19,"2"
CASE LASTKEY() = 51
DO JBDOIT WITH JBSYMBOL,JBT,JBL,13,22,"3"
CASE LASTKEY() = 52
DO JBDOIT WITH JBSYMBOL,JBT,JBL,10,16,"4"
CASE LASTKEY() = 53
DO JBDOIT WITH JBSYMBOL,JBT,JBL,10,19,"5"
CASE LASTKEY() = 54
DO JBDOIT WITH JBSYMBOL,JBT,JBL,10,22,"6"
CASE LASTKEY() = 55
DO JBDOIT WITH JBSYMBOL,JBT,JBL,07,16,"7"
CASE LASTKEY() = 56
DO JBDOIT WITH JBSYMBOL,JBT,JBL,07,19,"8"
CASE LASTKEY() = 57
DO JBDOIT WITH JBSYMBOL,JBT,JBL,07,22,"9"
CASE LASTKEY() = 8 && BACKSPACE
call ascroll with chr(2),chr(1),chr(15),chr(JABTOP+3),chr(JABLEFT+5),chr(JABTOP+3),chr(JABLEFT+24)
STORE IF(LEN(JBCURR) > 1,SUBSTR(JBCURR,1,(LEN(JBCURR)-1)),"0") TO JBCURR
IF JBCURR = "0"
@ JABTOP+3,JABLEFT+5 SAY SPACE(20-LEN(JBCURR))+JBCURR+" "
ENDIF
STORE .T. TO JBFLAGGER
CASE LASTKEY() = 61
DO JBDOIT WITH JBSYMBOL,JBT,JBL,16,22,"="
CASE LASTKEY() = -1
DO JBREDO WITH JBSYMBOL,JBT,JBL
@ JABTOP+5,JABLEFT+15 SAY "F2"
STORE " " TO JBMEM1
STORE "F2" TO JBSYMBOL
STORE 5 TO JBT
STORE 15 TO JBL
STORE .T. TO JBFLAGGER
CASE LASTKEY() = -2
DO JBREDO WITH JBSYMBOL,JBT,JBL
@ JABTOP+7,JABLEFT+3 SAY "ARC"
STORE "Arc" TO JBSYMBOL
STORE 7 TO JBT
STORE 3 TO JBL
STORE .T. TO JBFLAGGER
CASE LASTKEY() = -3
DO JBDOIT WITH JBSYMBOL,JBT,JBL,07,08,"Log"
CASE LASTKEY() = -4
DO JBDOIT WITH JBSYMBOL,JBT,JBL,10,03,"Sin"
CASE LASTKEY() = -5
DO JBDOIT WITH JBSYMBOL,JBT,JBL,10,08,"Exp"
CASE LASTKEY() = -6
DO JBDOIT WITH JBSYMBOL,JBT,JBL,13,03,"Cos"
CASE LASTKEY() = -7
DO JBDOIT WITH JBSYMBOL,JBT,JBL,13,08," π "
CASE LASTKEY() = -8
DO JBDOIT WITH JBSYMBOL,JBT,JBL,16,03,"Tan"
CASE LASTKEY() = -9
DO JBDOIT WITH JBSYMBOL,JBT,JBL,16,08," √x"
CASE LASTKEY() = 9 .OR. LASTKEY() = 271 && tab key or shift tab
DO JBREDO WITH JBSYMBOL,JBT,JBL
@ JABTOP+7,JABLEFT+13 SAY ""
STORE "0" TO JBCURR,JBCURRA
@ JABTOP+3,JABLEFT+5 SAY SPACE(20-LEN(JBCURR))+JBCURR+" "
STORE "" TO JBSYMBOL
STORE " " TO JBOPER
SET COLOR TO W/N
@ JABTOP+3,JABLEFT+27 SAY JBOPER
STORE 7 TO JBT
STORE 13 TO JBL
CASE LASTKEY() = 78 .OR. LASTKEY() = 110 && N,n '±' N,n NEGATE
DO CASE
CASE VAL(JBCURR) = 0
CASE VAL(JBCURR) < 0
STORE SUBSTR(JBCURR,2) TO JBCURR
CASE VAL(JBCURR) > 0
STORE "-"+JBCURR TO JBCURR
ENDCASE
@ JABTOP+3,JABLEFT+5 SAY SPACE(20-LEN(JBCURR))+JBCURR+" "
STORE .T. TO JBFLAGGER
CASE LASTKEY() = 88 .OR. LASTKEY() = 120 && X,x '1/x' INVERSE
IF VAL(JBCURR)=0
SET COLOR TO N*/W
@ JABTOP+3,JABLEFT+2 SAY "E"
SET COLOR TO W/N
STORE "0" TO JBCURR,JBCURRA
ELSE
STORE JBCURR TO JBCURRA
STORE 1/VAL(JBCURR) TO JBCURR
DO JBRIP0 WITH JBCURR
ENDIF
@ JABTOP+3,JABLEFT+5 SAY SPACE(20-LEN(JBCURR))+JBCURR+" "
STORE .T. TO JBFLAGGER
CASE LASTKEY() = 19 && LEFT ARROW
IF JBANGLE <> "DEG"
STORE (VAL(JBCURR) * 57.2958) TO JBCURR
DO JBRIP0 WITH JBCURR
STORE "DEG" TO JBANGLE
@ JABTOP+3,JABLEFT+5 SAY SPACE(20-LEN(JBCURR))+JBCURR+" "
ENDIF
STORE .T. TO JBFLAGGER
CASE LASTKEY() = 4 && RIGHT ARROW
IF JBANGLE <> "RAD"
STORE (VAL(JBCURR) * 0.017453) TO JBCURR
DO JBRIP0 WITH JBCURR
STORE "RAD" TO JBANGLE
@ JABTOP+3,JABLEFT+5 SAY SPACE(20-LEN(JBCURR))+JBCURR+" "
ENDIF
STORE .T. TO JBFLAGGER
CASE LASTKEY() = 5
DO CASE
CASE JBTYPE = " DEC "
STORE " HEX " TO JBTYPE
CASE JBTYPE = " HEX "
STORE " OCT " TO JBTYPE
CASE JBTYPE = " OCT "
STORE " BIN " TO JBTYPE
CASE JBTYPE = " BIN "
STORE " DEC " TO JBTYPE
OTHERWISE
STORE " DEC " TO JBTYPE
ENDCASE
STORE .T. TO JBFLAGGER
CASE LASTKEY() = 24 && DOWN ARROW
DO CASE
CASE JBTYPE = " DEC "
STORE " BIN " TO JBTYPE
CASE JBTYPE = " BIN "
STORE " OCT " TO JBTYPE
CASE JBTYPE = " OCT "
STORE " HEX " TO JBTYPE
CASE JBTYPE = " HEX "
STORE " DEC " TO JBTYPE
OTHERWISE
STORE " DEC " TO JBTYPE
ENDCASE
STORE .T. TO JBFLAGGER
CASE LASTKEY() = 28 && && ? HELP 63
DO JBHELP
STORE .T. TO JBFLAGGER
CASE LASTKEY() = 13 && CARRIAGE RETURN
STORE "X" TO JBEXIT && Return New Date
STORE VAL(JBCURR) TO JABRESULT
CASE LASTKEY() = 27 && ESCAPE KEY
STORE "X" TO JBEXIT && Returns Original
OTHERWISE
STORE .T. TO JBFLAGGER
ENDCASE
SET COLOR TO N/W
ENDDO
RETURN